As is known, computer graphics processing systems process large amounts of data, including texture data, among others. A texture is a digital image, often rectangular, having a (u, v) coordinate space. The smallest addressable unit of a texture is a texel, which is assigned a specific (u, v) coordinate based on its location. In a texture mapping operation, a texture is mapped to the surface of a graphical model as the model is rendered to create a destination image. In the destination image, pixels are located at specific coordinates in the (x, y) coordinate system. The purpose of texture mapping is to provide a realistic appearance on the surface of objects.
Texture data often resides in system memory, which is a shared resource. In many computer systems, other devices may attempt to access data used by the graphics processing system or utilize a shared system bus, both of which may result in increased data access time for the graphics processing system. Additionally, requests for data from system memory may take excessive amounts of time for other reasons. Accordingly, accessing system memory may have a performance inhibiting effect on graphics processing systems.
In modern computer graphics, texture processing can include many different types of texture mapping techniques including cubic mapping, mipmapping, and anisotropic mapping among others. The complexity and volume of arithmetic and logical operations utilized to perform texture processing necessitate the use of dedicated circuits in addition to those utilized in other graphics processing operations. Accordingly, these dedicated texture processing circuits can include a significant percentage of the hardware gates that make up a graphics processing unit.
Texture mapping is expensive both in computation and memory accesses. One technique for improving data accessibility is through a texture cache that is dedicated to storing texture data. The texture cache is provided texture data from the system memory before the data is required for texture processing, thereby providing the graphics system with the texture data and reducing the requirement to access system memory. This in turn reduces problems associated with memory latency. However, memory latency continues to be an issue even with the use of texture caches due to bank collisions, or cache thrashing, that may occasionally occur. Therefore, a previously unaddressed need exists in the industry for improved and optimized storage in cache memory of texture tile data.